home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
t_os
/
mopterm
/
nyan.plt
< prev
next >
Wrap
Text File
|
1993-07-08
|
44KB
|
1,693 lines
/* *
* NiftY Auto Navigator(NYAN) *
* *
* このオートパイロットについては,流用,変更,組み込み, *
* 許可なくOKです。 *
* ただし,以下の著作権表示については,必ず,コピーして下さい。 *
* *
* All Right Reserved, Copyright (c) モップ(NIFTY-PFF00570) 1991 *
* (Masahiro Kezuka) *
* *
* 1991年 7月 3日 初版 Ver0.01 *
* 1991年 7月 7日 2版 Ver0.02 *
* 1991年 7月 13日 3版 Ver0.03 *
* 1991年 8月 3日 4版 Ver0.04 *
* 1992年 9月 18日 5版 Ver0.05 *
* */
var modem[40]; /* modem 種別 /NoMNPAT/MNPAT/会社名モデム機種名 */
var telno[30]; /* 電話番号 */
var telty[10]; /* 回線の種別 1200|2400|2400T */
var telno2[30]; /* 電話番号(Retry) */
var telty2[10]; /* 回線の種別(Retry) 1200|2400|2400T */
var line[5]; /* プッシュ回線か,ダイヤル回線か T/P */
var id[9]; /* NIFTYのユーザID */
var pass[9]; /* パスワード */
var logd[20]; /* ログ格納用ディレクトリー(最後の\はなし) */
var forum[1000]; /* フォーラム名( 「,」 で複数) */
var hp[1000]; /* HP ID/HPパスワード/HP名( 「,」 で複数) */
/***********************************************************************
*
* 共通の処理ルーチン
*
***********************************************************************/
/* パラメタで指定されたファイルを削除する */
%delfile{ [ filename ]
dispoff({Yes});
command({del }|filename);
dispoff({No})
};
/* パラメタで指定されたディレクトリへ移動する(「A:\」と「A:」の両方が可能) */
%setcdir2 {[dir]
%dir2 @case(@nochar(dir),
2,{im(dir|{\})},,{im(dir)});
setcdir(dir2)
};
/* 指定されたディレクトリー配下に,第2パラメターで指定されたディレクトリを
(もし,無ければ)作成する。 */
%mkdir{ [ dir , name ]
dispoff({Yes});
case(@setcdir2(dir), {Yes}, {
command({mkdir } | name )},
{No},{select({装置(} | dir | {)が使えませんが?},99999,{},
{ もう一回やってみる },{mkdir(dir,name)},
{ 自動処理をやめる },{stop},
{ 無視して先の処理をやる },{})
});
dispoff({No})
};
/* 第1パラメタのファイルの中身を 第2パラメタのファイルにコピーする */
%copyfile{[OldName,NewName]
dispoff({Yes});
command({copy }| OldName | { } | NewName);
dispoff({No})
};
/* オープンされているメモを全て, クローズする */
%CloseAllMemo{
case(@mcheck !=0,
{Yes},{ loop({ mclose(2);
im(@mcheck !=0)
})
})
};
/***********************************************************************
*
* 自動的に,Niftyに接続し,目的の処理を行う
*
***********************************************************************/
%autoacc2{
/***********************************************************************
*
* ROAD1,ROAD2の各タイプに応じて,接続処理を行う
*
***********************************************************************/
%type00 {
type({.00+});
wait(20 ,type00, /* 20秒待って,なにもこないなら,00+ */
{46+} ,type00, /* 46+ なら 00+ */
{+\n00+} ,type00, /* 00+ なら 00+ */
{Enter} , /* Enter C.. なら 終わり */
);
};
%Road2c {
type({C NIF\n});
wait(20,{stop},{*},Road2c,{Connect},)
};
%Road2p {
wait(4,);
type({@P\n});
wait(20,{stop},{*},); /* *を待つ */
Road2c;
};
%callrd11 {[telno]
%MNPOff @case(@getchar(modemtype,5,1),
{m},{ im({\N0}) },
{n},{ im({} ) } );
display({ROAD1/1200(} | telno | {)に電話をかけます\n});
baud(1200);
dialone({AT} | @head(modem,{/})| MNPOff |
{D} | line | { } | telno ,
{type00;im({No})},{im({Yes})})
};
%callrd12 {[telno]
display({ROAD1/2400(} | telno | {)に電話をかけます\n});
baud(maxbaud);
dialone({AT} | @head(modem,{/}) |@body(modem,{/},{/}) | {D} |
line | { } | telno ,
{type00;im({No})},{im({Yes})})
};
%callrd2 {[telno]
display({ROAD2/2400(} | telno | {)に電話をかけます\n});
baud(maxbaud);
dialone({AT} | @head(modem,{/}) |@body(modem,{/},{/}) | {D} |
line | { } | telno ,
{Road2p;im({No})},{im({Yes})})
};
%callone{[telty,telno]
case(telty,
{1200}, {callrd11(telno)},
{2400}, {callrd12(telno)},
{2400T},{callrd2(telno)} ,
,{im({Yes})} )
};
%callnif{
%modemtype @tail(modem,{_});
%maxbaud @getchar(modemtype,1,4);
dispecho({No});
/* MNPなら, 送信文書はエコーバックを表示する */
case(@getchar(modemtype,5,1),{m},{dispecho({Yes})});
loop({
case(@callone(telty,telno),
{Yes},{ callone(telty2,telno2)
},{No},{im({No})
})
})
};
/***********************************************************************
*
* 未読のメールをダウンする
*
***********************************************************************/
%GoMail{
type({MAIL\n});
wait(20,{stop},
{\n>},{
type({SET MENU OFF\n});
wait(30,{stop},{\nMAIL>})
},{\nMAIL>});
type({SET PAGE OFF\n});
wait(30,{stop},{\nMAIL>})
};
%Mail2 {
loop({
wait(30,{stop},
{終了)\n>} ,{type({\n}); im({Yes})},
{終了)\n:} ,{type({2\n});im({Yes})},
{\naction:} ,{type({SAVE\n});im({Yes})},
{終了)\n>} ,{im({No})},
{\nMAIL>} ,{im({No})}
)
})
};
%MailDown {
wait(20,{stop},{\n>},);
GoMail;
mkdir(logd,{MAIL});
receive(logd | {\mail\mail.log});
type({READ NEW\n});
Mail2;
stoprec;
};
/***********************************************************************
*
* HPの未読をダウンする
*
***********************************************************************/
%GoHP{[name,pass]
type({GO HP\n});
wait(30,{stop},{\n>},);
type({1\n});
wait(30,{stop},{\n:},);
type(name|{\n});
wait(100,{stop},
{該当する利用者の},{
wait(30,{stop},{\n>},);
im({No})
},{\nHP>},{
type({SET PAGE OFF\n});
wait(100,{stop},{\nHP>},,);
im({Yes})
},{\n:},{ type(pass|{\n});
wait(100,{stop},{\nHP>},,);
type({SET PAGE OFF\n});
wait(100,{stop},{\nHP>},,);
im({Yes})
});
};
%oneHP {[name,pass,fname]
/* down all message */
delfile(fname | {.tlt});
receive(fname | {.tlt});
GoHP(name,pass);
test(,,{\nHP>},{
stoprec;
receive(fname | {.log});
type({READ NEW\n}); /* type first boad number */
wait(60,{stop},
{\nHP>} ,,
{◆指定日付以降},{wait(60,{stop},{\nHP>},)}
);
stoprec;
case(id = name,
{Yes},{
delfile( fname | {.usr});
receive(fname | {.usr});
type({GUEST\n});
wait(100,stop,{\nHP>});
stoprec;
})
},,{ stoprec
})
};
%HP{
var hp2[200];
mkdir(logd,{HP});
hp2 := hp;
loop({
%hpset @head(hp2,{,});
hp2 := @body(hp2,{,});
oneHP( @head(hpset,{/}) ,
@body(hpset,{/},{/}),
logd | {\hp\} | @tail(hpset,{/}) );
im( hp2 <> {} )
});
};
/***********************************************************************
*
* フォーラムの未読をダウンロードする
*
***********************************************************************/
%GoForum{[fname]
%SetMode{
type({SET PAGE OFF\n});
wait(30,{stop},{\nFORUM>});
type({SEND OFF\n});
wait(30,{stop},{\nFORUM>})
};
type({GO }| fname |{\n});
loop({
wait(30,{stop},
{終了)\n>} ,{type({\n});im({Yes})},
{◆番号又はコマンドを入力},
{
wait(30,{stop},{\n>},);
im({No})},
{◆現在このフォーラムは},
{
wait(30,{stop},{\n>},);
im({No})},
{-保守作業の為},
{
wait(30,{stop},{\n>},);
im({No})},
{終了\n>} ,{
type({SET MENU OFF\n});
wait(30,{stop},{\nFORUM>});
SetMode;
im({No})},
{\nFORUM>} ,{
SetMode;
im({No})}
)
});
};
%oneForum { [ fname ]
%ForumDir logd | {\} | fname;
%readall{
%Down3{[boadn]
stoprec;
receive( ForumDir | {\MES} | boadn | {.log});
readall;
};
wait(10000,{stop},{◆次頁はありません◆},,
{MES( 1):},{Down3({01})},{MES( 2):},{Down3({02})},
{MES( 3):},{Down3({03})},{MES( 4):},{Down3({04})},
{MES( 5):},{Down3({05})},{MES( 6):},{Down3({06})},
{MES( 7):},{Down3({07})},{MES( 8):},{Down3({08})},
{MES( 9):},{Down3({09})},{MES(10):},{Down3({10})},
{MES(11):},{Down3({11})},{MES(12):},{Down3({12})},
{MES(13):},{Down3({13})},{MES(14):},{Down3({14})},
{MES(15):},{Down3({15})},{MES(16):},{Down3({16})},
{MES(17):},{Down3({17})},{MES(18):},{Down3({18})},
{MES(19):},{Down3({19})},{MES(20):},{Down3({20})}
);
};
mkdir(logd , fname);
delfile( ForumDir | {\title} | {.log});
receive( ForumDir | {\title} | {.log});
GoForum(fname);
test(,,{\nFORUM>},{
type({MES\n});
wait(50,{stop},{\n>});
type({MREAD\n\n});
readall;
stoprec;
wait(30,{stop},{\n>},);
type({SEND ON\n});
wait(30,{stop},{\n>},)
},,{ stoprec;
})
};
%Forum{
var f2[1000];
f2 := forum; /* forum= 「FORUM1,FORUM2,,,」 */
loop({
%fname @head(f2,{,});
f2 := @body(f2,{,});
oneForum( fname );
im( f2 <> {} )
});
};
/***********************************************************************
*
* Niftyの課金情報を見る。
*
***********************************************************************/
%bill{
delfile( logd | {\BILL.LOG});
receive( logd | {\BILL.LOG});
type({GO BILL\n});
wait(30,stop,{\n>},);
type({2\n});
wait(30,stop,{了)\n>},);
stoprec;
};
/***********************************************************************
*
* フォーラム, HP , メールに, メッセージをアップする。
*
***********************************************************************/
%UpText{
var IndexLine[82];
%FNameTop logd | {\UP\};
%IndexFName FNameTop | {INDEX.TXT}; /* 制御ファイル */
%SaveFName FNameTop | {SAVE.TXT}; /* 作業用のファイル*/
/* 制御ファイルから, 予約(予)されたファイルを一つ取り出し
アップ処理を行う */
%UpOne{
%UpBody{
%fno @head(@getchar(IndexLine,4,3),{ });
send( FNameTop | {MES} | fno | {.TXT});
type({\n/E\n});
wait(300,{stop},{\n:},);
type({2\n});
loop({ /* メールの不在通知のために */
wait(30,{stop},
{処理)\n>} ,{type({\n});im({Yes})},
{\n:} ,{im({No})}
)
});
type({1\n}); /* 2 :For Debug */
};
%UpForum{
%ResNum @getchar(IndexLine,26,5);
GoForum(@getchar(IndexLine,14,8));
type({MES }| @getchar(IndexLine,23,2) |{\n});
wait(30,{stop},{\nCCS(N)>},);
case( ResNum ,{ }, {
type({SAY\n});
wait(30,{stop},{\n:},);
type({1\n});
},,{
type({RE } | (ResNum+0) |{\n});
});
wait(30,{stop},{/E)\n},);
type({SUB:} | @getchar(IndexLine,32,80) );
UpBody;
wait(130,{stop},{\nCCS(N)>},);
type({SEND ON\n});
wait(30,{stop},{\nCCS(N)>},);
};
%UpHP{
%name @head(@getchar(IndexLine,14,8),{ });
%HPData @tail(@head(hp,{/} | name),{,});
%HPID @head(HPData,{/});
%HPPass @body(HPData,{/},{/});
GoHP(HPID,HPPass);
type({WRITE\n});
wait(30,{stop},{\n:},);
type(@getchar(IndexLine,32,80) );
wait(30,{stop},{\n:},);
type({1\n});
wait(30,{stop},{/E)\n},);
UpBody;
wait(130,{stop},{\nHP>},);
};
%UpMail{
GoMail;
type({COM\n});
wait(30,{stop},{/E)\n},);
type({SUB:}| @getchar(IndexLine,32,80));
type({TO:} | @getchar(IndexLine,14,8) | {\n});
wait(30,{stop},{\n},);
/*type({FROM:ハンドル名\n}); ハンドルを入れる場合用 */
wait(30,{stop},{\n},);
UpBody;
wait(130,{stop},{\nMAIL>},);
};
var Return[4];
delfile(SaveFName);
Return := {No};
fopen(IndexFName);
loop({ IndexLine := @fread;
case(@getchar(IndexLine,1,2),
{予},{ case(@getchar(IndexLine,8,5),
{Forum},UpForum,
{HP },UpHP,
{Mail },UpMail);
IndexLine := {済} | @getchar(IndexLine,3,80);
loop({ write(SaveFName,IndexLine );
IndexLine := @fread;
im(IndexLine <> {});
});
copyfile(SaveFName,IndexFName);
Return := {Yes};
im({No})
},{保},{write(SaveFName,IndexLine );
im({Yes})
},{済},{write(SaveFName,IndexLine );
im({Yes})
},,{ im({No})
})
});
fclose;
im(Return)
};
/* 前回, アップしたファイル(済)を削除する */
%DelOldText{
var AnyWrite[3];
AnyWrite:={No};
delfile(SaveFName);
fopen(IndexFName);
loop({ IndexLine := @fread;
case(@getchar(IndexLine,1,2),
{予},{ write(SaveFName,IndexLine );
AnyWrite:={Yes};
im({Yes})
},{保},{write(SaveFName,IndexLine );
AnyWrite:={Yes};
im({Yes})
},{済},{%fno @head(@getchar(IndexLine,4,3),{ });
delfile( FNameTop | {MES} | fno | {.TXT});
im({Yes})
},,{ im({No})
})
});
fclose;
case(AnyWrite,
{Yes},{copyfile(SaveFName,IndexFName)},
{No} ,{delfile(IndexFName)} )
};
/* UpText Main */
case(@filechk(IndexFName),
{Yes},DelOldText);
case(@filechk(IndexFName),
{Yes},{ loop(UpOne) });
};
/***********************************************************************
*
* メイン処理 Call Telephone and Send Id ,Password
*
***********************************************************************/
stopbit(1);
xon({Yes});
rscs({Yes});
click({No});
nattou({Yes});
account(logd | {\ACCOUNT.TXT},{NIFTY-Serve});
footnote({NIFTY-Serveへ電話をかけています。});
callnif;
footnote({NIFTY-Serveの前処理をしています。});
case(id,{},{
select({ユーザIDの設定がありません。後は手動で?},10,stop,
{やります},stop,{電話を切ります},{discon;stop})
});
wait(20,{stop},{Connection-ID --->},);
type({SVC\n});
wait(20,{stop},{Enter User-ID --->},);
type( id | {\n}); /* AAA00000は貴方のユーザIDに変更して下さい */
wait(20,{stop},{Enter Password --->},);
case(pass,
{},{ footnote({パスワードをキーボードから入れて下さい});
/*パスワードを,直接入力する */
sendtype({Ch/2});
chat({Yes});
wait(300,{stop},{ようこそ},);
chat({No});
sendtype({Line});
footnote({前置きの処理をしています。});
},
,{type(pass | {\n})});
setcdir2(logd);
delfile( logd | {\title} | {.log});
receive(logd | {\title} | {.log});
loop({
wait(30, {stop},
{\n>}, {type({\n});im({Yes})},
{NIFTY-Serve TOP},{im({No})}
)
});
wait(30,{stop},{\n>},);
stoprec;
/* read mail */
footnote({メールの受信処理をしています。});
type({MCHECK\n});
wait(30, {stop},
{\n>}, ,
{未読分},MailDown
);
case( hp<>{},{Yes},{
footnote({HPの受信処理をしています。});
HP /* read hp */
});
case( forum<>{},{Yes},{
footnote({フォーラムの受信処理をしています。});
Forum; /* read forum */
});
footnote({文書のアップ処理をしています。});
UpText; /* Upload Forum,Hp,Mail */
/* 課金情報の表示 */
footnote({NIFTYの課金情報を参照しています。});
bill;
footnote({NIFTYの終了処理をしています。});
type({bye\n});
wait(30,,{ました。});
wait(3);
discon;
footnote({});
}; /* end of autoacc2 */
/* 残り容量を確認してから, autoacc2を行う */
%autoacc{
case(@diskrem < (50*1024),
{Yes},{
select({このディスクの残り容量(} | (@diskrem / 1024)
| {Kbyte)では不足です。}
,30,, {確認}, )
},{No},autoacc2
)
};
/***********************************************************************
*
* ダウンロードした,文書を読む処理
*
***********************************************************************/
/***********************************************************************
*
* フォーラムの会議室, HPの内容, MAILの内容を一覧,表示,選択可能とする。
* fname : 会議室のログのファイル名
* type : Form:ファーラムの会議室ログ
* HP : HPのログ
* Mail:メールのログ
* ForumN: フォーラム名,HP名
*
************************************************************************/
%boadmenu
{[fname,type,ForumN]
var linenum[8]; /* 表示中メッセージの行番号(MEMO.1内の一覧での行位置) */
var FoType[8]; /* Stock :Stock会議室 Cyclic:Cyclic会議室 */
/* タイトルを抜き出して,メモに一行のに入れる処理 */
%setline {
var item[92];
case(type,
{Forum},{
case(FoType,
{Stock},{
item:=@ftell | { } | @getchar(line,1,3);
%line2 @fread;
case(@getchar(line2,27,2),
{へ},{item:=item | @getchar(line2,23,4)},
,{item:=item | { }}
);
item:=item | @getchar(line,19,80);
},{Cyclic},{
item:=@ftell | { } | @getchar(line,1,5);
%line2 @fread;
case(@getchar(line2,29,2),
{へ},{item:=item | @getchar(line2,23,6)},
,{item:=item | { }}
);
item:=item | @getchar(line,21,80);
});
madd(2,item);
},{HP},{
item:=@ftell | { } | @getchar(line,1,3);
item:=item | { } |@getchar(line,7,14) |
@getchar(line,23,9) | @getchar(line,37,50);
madd(2,item);
},{Mail},{
item:=@ftell;
%line2 @fread;
item:=item | @getchar(line,4,17) | @getchar(line,23,8) |
@getchar(line,32,6) | { } | @getchar(line2,11,41);
madd(2,item);
});
};
/* オリジナルの題名から, 応答用の題名を作成する関数 */
%resTitle{[org]
case(@getchar(org,1,3),
{Re:},{im( {Re*2:} | @getchar(org,4,80) )},
{re:},{im( {Re*2:} | @getchar(org,4,80) )},
{RE:},{im( {Re*2:} | @getchar(org,4,80) )},
{Re*},{ %after @getchar(org,4,80);
%num @head(after,{:});
im( {Re*} | (num+1) | {:} |
@body(after,{:},) )
},
,{im( {Re:} | org )}
)
};
/* 送信用の文書を,制御ファイルに登録する */
%SetIndex{
var fno[5];
var IndexLine[82];
var Wtitle[82];
var Wtitle2[82];
%Wtype
@select({このメッセージを送信予約しますか?。}
,99999,{},
{送信予約する}, {im({予})},
{送信予約しないが保存する}, {im({保})},
{保存しないで捨てる。}, {im({捨})},
{再度,編集に戻る。}, {im({戻})}
);
case(Wtype ,
{捨},{im(Wtype)},
{戻},{im(Wtype)},
,{ /* Wtype = 0 or Wtype = 1 */
%Line @memo(2,linenum,1);
case(type,
{Forum},{
IndexLine := {Forum:} |
@getchar(ForumN|{ },1,8) | {/} |
@head(@tail(fname,{MES}),{.}) | {/} |
@case(FoType,{Stock},{
im({00}|@getchar(Line,11, 3))},
{Cyclic},{getchar(Line,11,5)}) ;
Wtitle := @case(FoType,
{Stock} ,{getchar(Line,38,80)},
{Cyclic},{getchar(Line,41,80)});
},{HP},{
IndexLine := {HP :} |
@getchar(ForumN|{ },1,8) |
{ };
Wtitle := @getchar(Line,39,80);
},{Mail},{
IndexLine := {Mail :} |
@getchar(Line,26,8) |
{ };
Wtitle := @getchar(Line,41,80);
});
Wtitle := @getchar(@resTitle(Wtitle),1,80);
loop({
Wtitle2 :=@input({題名を入れて下さい。},,Wtitle) ;
case(@nochar(Wtitle2)>40,{Yes},{
footnote({題名は, 全角20文字までです});
im({Yes})
},,{im({No})
});
});
footnote({});
Wtitle := @case( Wtitle2 , {} ,{im(Wtitle)},
,{im(Wtitle2 | {\n})});
fno := 0;
mkdir(logd , {UP});
%nametop logd | {\UP\};
loop({ fno := fno+1;
filechk(nametop | {MES} | fno | {.txt})
});
fno := @getchar(fno | { },1,3);
IndexLine := Wtype | { } | fno | { } | IndexLine |
{:} | Wtitle ;
write( nametop | {INDEX.TXT}, IndexLine);
im( nametop | {MES} | fno | {.txt});
})
};
/* メッージを上半分に表示,下半分でコメント書けるようにする
メモ3がメッセージ, メモ4がコメント */
%responce{
CloseAllMemo;
mopen(3,0,21,639,250); /* 見るだけの 画面 */
mclose(1);
madd(4,{});
mset(4,{w});
mopen(4,0,251,639,459); /* コメント用 画面 */
footnote({終了},{b});
loop( {waitx(1000);
im(@xtype!=2 && @xtype!=101 && @xtype!=201)
});
case(@memo(4) <> {},
{Yes},{
%OutFile @SetIndex;
CloseAllMemo;
mset(4,{n});
case(OutFile ,
{捨},{},
{戻},responce,
,{mwrite(OutFile,4)}
);
},,{
CloseAllMemo;
mset(4,{n});
})
};
/* メッセージはメモ2を使用して表示, PF2で前, PF3で後, PF1で終了する。*/
%dispone{
var cont[4];
loop({ cont := {Yes};
%st @getchar(@memo(2,linenum,1),1,8);
%len @getchar(@memo(2,linenum+1,1),1,8)-st;
case( len > 0 ,
{Yes},{
mclear(3);
mclear(4);
mread(fname,3,st,len);
mset(3,{r});
mopen(3,0,21,639,459); /* 見るだけの画面 */
footnote({終了 前 次 応答},
{b});
loop( {waitx(1000);
im(@xtype<100)
});
case( @xtype,
101, {cont := {No}},
201, {cont := {No}},
102, {linenum := linenum-1},
202, {linenum := linenum-1},
103, {linenum := linenum+1},
203, {linenum := linenum+1},
104, {responce},
204, {responce}
);
case(@mcheck != 0, {Yes}, { mclose(3) });
CloseAllMemo;
});
im( cont && len>0)
});
mset(3,{n})
};
/* メッセージのタイトルを読みこみ,メモ1にタイトル一覧を作成する */
mclear(2);
madd(2,{99999999 } |
{★表示したいメッセージを左ダブルクリック}|
{(又はカーソル移動+PF2)してね★\n});
fopen(fname);
/* 「/」の位置で,タイトル行を見分けます。 */
%sulashP @case(type,
{Forum},{
case(@getchar(@read(fname,1,1),6,1)={/} ||
@getchar(@read(fname,2,1),6,1)={/} ,
{Yes},{ FoType:={Cyclic};
im(6)
},, {FoType:={Stock};
im(4)
})
},
{HP}, {im(9)},
{Mail}, {im(35)} );
footnote({ログの取り出しをしています。ちょっと,お待ちを!});
loop({
%line @fread(sulashP,{/});
setline;
im(line <> {})
});
fclose;
/* 一覧を表示し,メッセージを選択してもらう */
linenum:=0;
mset(2,{r});
loop({
mopen(2,0,21,639,459);
curline(linenum);
footnote({終了表示},{b});
loop({waitx(1000);
im(@xtype!=2 && @xtype<100)
});
linenum := @xlinenum;
case(@xtype,
2,{
CloseAllMemo;
dispone; /* 選択されたメッセージの表示 */
im({Yes})},
101,{im({No}) },
102,{
CloseAllMemo;
dispone; /* 選択されたメッセージの表示 */
im({Yes})},
201,{im({No}) },
202,{
CloseAllMemo;
dispone; /* 選択されたメッセージの表示 */
im({Yes})}
)
});
case(@mcheck != 0, {Yes}, { mclose(3) });
CloseAllMemo;
mset(2,{n});
}; /* end of log menu */
%dispFile{[filename]
case(@filechk(filename),{Yes},{
mclear(2);
mread(filename,2);
mset(2,{r});
mopen(2,0,21,639,459);
footnote({終了},{b});
loop({waitx(1000);
im(@xtype!=2 && @xtype<100)
});
case(@mcheck != 0, {Yes}, { mclose(3) });
mset(2,{n})
},{No},{
select({受信済みのファイルがありません。},10,{},{確認},)
})
};
%readdoc{
var boadnum[10];
%setdocm{
var f2[1000];
%oneHP{[name]
%name2 @getchar(name | { },1,8);
madd(1,{<}|name2|{> HPの最新オープンニング\n});
madd(1,{<}|name2|{> HPの内容 \n});
case(@filechk( logd | {\HP\} | fname | {.USR}),{Yes},{
madd(1,{<}|name2|{> HPの最近の参照者\n})
})
};
%oneBoad{
%line @fread(23,{/});
case(line<>{},{Yes},{
madd(1, {<} | name2 | {> フォーラム } |
@getchar(line,1,2) |
{ 会議室 :} |
@getchar(line,29,80) );
im({Yes}) /* return Yes for continue */
},{No},{im({No})}) /* return No for end of file */
};
%oneForum{[name]
%name2 @getchar(name | { },1,8);
madd(1,{<}|name2|{> フォーラムのオープンニング\n});
fopen( logd | {\} | name | {\title} | {.log});
loop({oneBoad});
fclose;
};
/* setdocm main start */
mclear(1);
madd(1,{ ★ 読みたい物を左ダブルクリック}|
{(又はカーソル移動+PF2)で選択して下さい ★ \n});
case(@filechk( logd | {\TITLE.LOG}),
{Yes},{ madd(1,{ }|
{最新のNifty オープニングメッセージ \n})});
case(@filechk( logd | {\BILL.LOG}),
{Yes},{ madd(1,{ }|
{最新のNifty 課金情報(3か月分文)\n})});
case(@filechk( logd | {\ACCOUNT.TXT}),
{Yes},{ madd(1,{ }|
{アクセス履歴情報\n})});
case(@filechk(logd | {\MAIL\MAIL.LOG}),
{Yes},{ madd(1,{ }|
{受信したメールの内容 \n})});
f2 := hp;
loop({
%fname @tail(@head(f2,{,}),{/});
f2 := @body(f2,{,});
case(@filechk( logd | {\HP\} | fname | {.TLT}),
{Yes},{oneHP( fname )});
im( f2 <> {} )
});
f2 := forum;
loop({
%fname @head(f2,{,});
f2 := @body(f2,{,});
case(@filechk( logd | {\} | fname | {\title} | {.log}),
{Yes},{oneForum( fname )});
im( f2 <> {} )
});
}; /* end of setdocm */
%dispboad{
%line @memo(1,boadnum,1);
%type @getchar(line,14,14);
%name @getchar(line,3,8);
case(type,
{最新のNifty オ},{dispFile( logd | {\TITLE.LOG})},
{最新のNifty 課},{dispFile( logd | {\BILL.LOG})},
{アクセス履歴情},{dispFile( logd | {\ACCOUNT.TXT})},
{受信したメール},{
%filename logd | {\MAIL\MAIL.LOG};
case(@filechk(filename),{Yes},{boadmenu(filename,{Mail},name)},
,{select(
{受信済のメールがありません。},10,{},{OK?},)
})
},
{HPの最新オープ},{dispFile( logd | {\HP\} | name | {.TLT})},
{HPの内容 },{
%filename logd | {\HP\} | name | {.LOG};
case(@filechk(filename),{Yes},{boadmenu(filename,{HP},name)},
,{select({このHPには}|
{受信済のメッセージがありません。},10,{},{OK?},)
})
},
{HPの最近の参照},{dispFile( logd | {\HP\} | name | {.USR})},
{フォーラムのオ},{dispFile( logd | {\} | name | {\TITLE.LOG})},
/*会議室*/ ,{
case(@getchar(line,14,10),{フォーラム},{
%num @case(@getchar(line,25,1),
{ },{im({0}|@getchar(line,26,1))},
,{getchar(line,25,2)}
);
%filename logd | {\} | name | {\} |
{MES} | num | {.LOG};
case(@filechk(filename),{Yes},{boadmenu(filename,{Forum},name)},
,{select({この会議室には,}|
{受信済のメッセージがありません。},10,{},{OK?},)
})
})
}) /* end of case */
};
footnote({受信文書の一覧を作成中です。});
setdocm;
mset(1,{r});
boadnum :=0;
loop({
mopen(1,0,21,639,459);
curline(boadnum);
footnote({終了表示},{b});
loop( {waitx(1000);
im(@xtype!=1 && @xtype<100)
}
);
boadnum := @xlinenum;
case(@xtype,
1,{ CloseAllMemo;
dispboad;
im({Yes})
},
101,{ im({No}) },
102,{ CloseAllMemo;
dispboad;
im({Yes})
},
201,{ im({No}) },
202,{ CloseAllMemo;
dispboad;
im({Yes})
},
,{ CloseAllMemo;
im({Yes})
}
)
});
case(@mcheck != 0, {Yes}, { mclose(3) });
CloseAllMemo;
mset(2,{n});
mset(1,{n});
footnote({});
}; /* end of read doc */
/************************************************************************
*
* 送信文書の作成/更新処理
*
*************************************************************************/
%senddoc{
var IndexLine[82];
%FNameTop logd | {\UP\};
%IndexFName FNameTop | {INDEX.TXT}; /* 制御ファイル */
%SaveFName FNameTop | {SAVE.TXT}; /* 作業用のファイル*/
/* set destination (21byte)
*/
%SetDest{
%DestMail{
%name @input({送信先のIDを入れて下さい。}) ;
case( @nochar(name)!=8,{Yes},{
footnote({「}|name|{」は 英数字8文字でありません});
DestMail
},,{
footnote({});
im({Mail :} | name | { })
})
};
%DestHP{
%name @input({HPの名前を入れて下さい。}) ;
case( hp = @head(hp,{/}|name),{Yes},{
footnote({「}|name|{」は 登録されていません});
DestHP
},,{
footnote({});
im({HP :} | @getchar(name|{ },1,8)
| { })
})
};
%DestForum{
var boad[10];
var org[10];
%name @input({フォーラムの名前を入れて下さい。}) ;
case( forum = @head(forum,name),{Yes},{
footnote({「}|name|{」は 登録されていません});
DestForum
},,{
%ans @input({「会議室番号」又は「会議室番号,コメント先」}) ;
case(ans=@head(ans,{,}),
{Yes},{ boad:=ans+0;
org :={ }
},{No},{boad:=@head(ans,{,})+0;
org :=@head(ans,{,})+0
});
case( boad<1 || boad>20 ||
(org<>{ }) && (org<1 || org>99999),
{Yes},{
footnote({会議室番号, コメント先がおかしいです});
DestForum;
},,{
footnote({});
case(@nochar(boad),1,{boad:={0}|boad});
case(@nochar(org), 1,{org:={0000}|org},
2,{org:={000} |org},
3,{org:={00} |org},
4,{org:={0} |org});
im({Forum:} |
@getchar(name|{ },1,8) | {/} |
boad | {/} | org )
});
})
};
select({何に使いますか?}
,99999,{im({})},
{ メール }, DestMail,
{ HPへのアップ }, DestHP,
{ 会議室へのアップ }, DestForum,
{ メインメニューに戻る }, {im({})});
};
%ChgIndex{[Proc]
var WorkLine[82];
delfile(SaveFName);
fopen(IndexFName);
loop({ WorkLine := @fread;
case(@getchar(IndexLine,4,3) = @getchar(WorkLine,4,3),
{No},{ write(SaveFName,WorkLine );
im({Yes})
},{Yes},{ Proc;
im({Yes})
});
im(WorkLine<>{})
});
fclose;
copyfile(SaveFName,IndexFName);
};
%DelDoc{
ChgIndex({
%fno @head(@getchar(IndexLine,4,3),{ });
delfile( FNameTop | {MES} | fno | {.TXT});
})
};
%SetDoc{[type]
ChgIndex({
IndexLine := type | @getchar(IndexLine,3,80);
write(SaveFName,IndexLine );
})
};
%SetTDoc{
%Wtitle @getchar(IndexLine,32,40);
%Wtitle2 @input({題名を入れて下さい。},,Wtitle) ;
case( Wtitle2 <>{} && (Wtitle2 | {\n})<>Wtitle,{Yes},{
ChgIndex({
IndexLine := @getchar(IndexLine,1,31) |
Wtitle2 | {\n};
write(SaveFName,IndexLine );
})
})
};
%SetDDoc{
%Dest @SetDest;
case( Dest<>{} && Dest<>@getchar(IndexLine,8,23),{Yes},{
ChgIndex({
IndexLine := @getchar(IndexLine,1,7) |
Dest | @getchar(IndexLine,31,80);
write(SaveFName,IndexLine );
})
})
};
%UpdDoc{
%fno @head(@getchar(IndexLine,4,3),{ });
%fname FNameTop | {MES} | fno | {.TXT};
mclear(2);
mread(fname,2);
mset(2,{w});
mopen(2,0,21,639,459);
footnote({更新破棄},{b});
loop( {waitx(1000);
im(@xtype!=2 && @xtype!=101 && @xtype!=201 &&
@xtype!=102 && @xtype!=202)
});
%endtype @xtype;
CloseAllMemo;
mset(2,{n});
case( endtype==101 || endtype==201,{Yes},{
mwrite(fname,2)
})
};
%OneDoc{
case(IndexLine<>{},{Yes},{
CloseAllMemo;
select({どういう処理を行いますか? :}|
@head(@getchar(IndexLine,30,40),{\n})
,99999,{},
{ 削除する }, DelDoc,
{ 送信を保留しておく }, {SetDoc({保})},
{ 次回の送信を予約する }, {SetDoc({予})},
{ 題名を変更する }, SetTDoc,
{ あて先を変更する }, SetDDoc,
{ 文書内容を変更する }, UpdDoc,
{ 何もしないで戻る }, )
})
};
%OldDoc{
case(@filechk(IndexFName),
{No},{
select({作成済の送信文書がありません。}
,20,{}, { 確認 }, ,)
},{Yes},{
loop({
mclear(1);
mread(IndexFName,1);
mset(1,{r});
mopen(1,0,21,639,459);
footnote({終了選択},{b});
loop( {waitx(1000);
im(@xtype!=1 && @xtype<100)
}
);
IndexLine := @memo(1,@xlinenum,1);
case(@xtype,
1,{
OneDoc;
im({Yes})},
102,{
OneDoc;
im({Yes})},
202,{
OneDoc;
im({Yes})},
101,{im({No}) },
201,{im({No}) },
,{CloseAllMemo;
im({Yes}) }
)
});
case(@mcheck != 0, {Yes}, { mclose(3) });
CloseAllMemo;
mset(2,{n});
mset(1,{n});
footnote({});
})
}; /* end of Old Doc */
%NewDoc2{[Dest,Title]
var fno[10];
var endtype[3];
madd(1,{});
mclear(2);
madd(2,{});
mset(2,{w});
mopen(2,0,21,639,459);
loop({
footnote({終了},{b});
loop( {waitx(1000);
im(@xtype!=2 && @xtype!=101 && @xtype!=201)
});
footnote({});
endtype :=@select({このメッセージを送信予約しますか?。}
,99999,{},
{送信予約する}, {im({予})},
{送信予約しないが保存する}, {im({保})},
{保存しないで捨てる。}, {im({捨})},
{再度,編集に戻る。}, {im({戻})}
);
im(endtype = {戻})
});
CloseAllMemo;
mset(2,{n});
case( endtype={予} || endtype={保} ,{Yes},{
fno := 0;
mkdir(logd , {UP});
loop({ fno := fno+1;
filechk(FNameTop | {MES} | fno | {.txt})
});
fno := @getchar(fno | { },1,3);
IndexLine := endtype | { } | fno | { } | Dest |
{:} | Title | {\n};
write( IndexFName , IndexLine);
%fname FNameTop | {MES} | fno | {.TXT};
mwrite(fname,2);
});
}; /* end of New Doc2 */
%NewDoc{
var Title[82];
%Dest @SetDest;
case(Dest<>{},{Yes},{
loop({
Title :=@input({題名を入れて下さい。});
case(@nochar(Title)>40,{Yes},{
footnote({題名は, 全角20文字までです});
im({Yes})
},,{im({No})
});
});
footnote({});
case(Title<>{},{Yes},{
NewDoc2(Dest,Title);
})
})
};
/* senddoc main start */
select({どういう処理を行いますか?}
,99999,{},
{ 既存の送信文書の再処理 }, OldDoc,
{ 新しい送信文書の作成 }, NewDoc,
{ メインメニューに戻る。 }, {} )
}; /* end of senddoc */
/************************************************************************
*
* 設定処理ルーチン群
*
*************************************************************************/
%setat{
var type[10];
type := @select({どういうタイプのモデムですか?}
,99999,{},
{ 1200 MNPなし }, {im({1200n})},
{ 2400 MNPなし }, {im({2400n})},
{ 2400(端末速度2400) MNPあり }, {im({2400m})},
{ 2400(端末速度4800以上) MNPあり }, {im({4800m})},
/*{ 2400以上(端末速度9600以上) MNPあり }, {im({9600m})},*/
);
case(type,{},{type:={1200n}});
%a @input({ATコマンド設定して下さい。例「ATX3\N3\V1\Q3\J0」},,
{AT}|@head(modem,{/}));
case(a<>{},{Yes},{
case(@getchar(a,1,2),
{AT},{
case( a = @head(a,{\}),
{Yes},{modem:=@getchar(a,3,999)|{/}|@getchar(a,3,999)|
{/AT直接指定_}|type;
},,{ modem:=@getchar(a,3,999)|{/}|
{/AT直接指定_}|type;
});
},
,{setat});
});
};
%setmodem{
select({モデムの機種を選んで下さい。現在は「} |
@head(@tail(modem,{/}),{_}) | {」です。}
,99999,{},
{変更しない},{},
{内蔵1200}, {modem :={X3//内蔵1200_1200n} },
{内蔵2400}, {modem :={X3/\N3\V1\Q3\J0/内蔵2400_4800m} },
{富士通 PM1200}, {modem :={X3//PM1200_1200n} },
{富士通 PM2400}, {modem :={X3/\N3\V1\Q3\J0/PM2400_4800m} },
{AIWA PV-A1200}, {modem :={X3//PV-A1200_1200n} },
{AIWA PV-A2400}, {modem :={X3//PV-A2400_2400n} },
{AIWA PV-A24MNP5}, {modem :={X3&D2/\N3\Q3\J0/PV-A24MNP5_4800m} },
{AIWA PV-A24V42}, {modem :={X3&D2/\N3\Q3\J0/PV-A24V42_4800m} },
{EPSON SR-120S}, {modem :={X3//SR-120S_1200n} },
{EPSON SR-240AT}, {modem :={X3//SR-240AT_2400n} },
{OMRON MD1200}, {modem :={X3//MD1200_1200n} },
{OMRON MD12FS}, {modem :={X3//MD12FS_1200n} },
{OMRON MD2400F}, {modem :={X3/\N3\V1\Q2\J0/MD2400F_2400m} },
{OMRON MD24FS4}, {modem :={X3/\N3\Q2\J0/MD24FS4_2400m} },
{OMRON MD24FP4}, {modem :={X3/\N3\Q2\J0/MD24FP4_2400m} },
{OMRON MD24FS5}, {modem :={X3/\N3\Q2\J0/MD24FS5_2400m} },
{OMRON MD24FS7}, {modem :={X3/\N3\Q2\J0/MD24FS7_2400m} },
{NEC COMSTAR 2424}, {modem :={X3/\N3\Q2/COMSTAR 24_2400m} },
{ATコマンド直設定}, {setat}
)
};
%settelno{
%a @input({近くのNiftyの電話番号を設定して下さい。例「0559235038」},,
telno);
case(a<>{},{Yes},{telno := a});
};
%settelty{
%name @case(telty,
{1200},{im({1200 ROAD1})},
{2400},{im({2400 ROAD1})},
{2400T},{im({2400 ROAD2})},
,{im({設定なし})} );
select({アクセス・ポイントのタイプを選んで下さい。現在は「}|name|{」です。}
,99999,{},
{ 変更しない },{},
{ 回線速度=1200 ROAD1 }, {telty :={1200} },
{ 回線速度=2400 ROAD1 }, {telty :={2400} },
{ 回線速度=2400 ROAD2 }, {telty :={2400T} } )
};
%setline{
%name @case(line,
{T},{im({プッシュ回線})},
{P},{im({ダイヤル回線})},
,{im({設定なし})} );
select({電話回線のタイプを選んで下さい。現在は「}|name|{」です。}
,99999,{},
{ 変更しない },{},
{ プッシュ回線 }, {line :={T} },
{ ダイヤル回線 }, {line :={P} })
};
%setlogd2{
%setlogd2{[old]
%a @input({この格納先は今,使用できませんが?。 例「B:」},,
old);
case(a<>{},{Yes},{
case(@setcdir2(a),{Yes},{logd := a},
,{setlogd2(a)})
})
};
%a @input({受信データの格納先を設定して下さい。例「B:」,「C:\NIF」},,
logd);
case(a<>{},{Yes},{
case(@setcdir2(a),{Yes},{logd := a},
,{setlogd2(a)})
})
};
%setlogd{
%cur @case(logd,
{A:},{im({0番のフロッピー(A:)})},
{B:},{im({1番のフロッピー(B:)})},
{D:},{im({ハードディスク (D:)})},
{E:},{im({ハードディスク (E:)})},
{F:},{im({ハードディスク (F:)})},
{G:},{im({ハードディスク (G:)})},
,{im({パスの直接設定})}
);
select({文書を格納する装置は?。現在は「} | cur | {」}
,99999,{},
{変更しない},{},
{0番のフロッピー(A:)}, {logd :={A:} },
{1番のフロッピー(B:)}, {logd :={B:} },
{ハードディスク (D:)}, {logd :={D:} },
{ハードディスク (E:)}, {logd :={E:} },
{ハードディスク (F:)}, {logd :={F:} },
{ハードディスク (G:)}, {logd :={G:} },
{パスを直接入力する}, {setlogd2}
)
};
%setid{
%setid2{[old]
%a @input({ユーザIDは8文字です。 例「BBB00123」},,
old);
case(a<>{},{Yes},{
case(@nochar(a)=8,{Yes},{id := a},
,{setid2(a)})
})
};
%a @input({NiftyのユーザIDを設定して下さい。例「AAA00321」},,
id);
case(a<>{},{Yes},{
case(@nochar(a)=8,{Yes},{id := a},
,{setid2(a)})
})
};
%setpass{
%setpassn{
%setpass2{[old]
%a @input({パスワードは8文字以下です。 例「MIKENEKO」},,
old);
case(a<>{},{Yes},{
case(@nochar(a)<=8,{Yes},{pass := a},
,{setpass2(a)})
})
};
%a @input({Niftyのパスワードを設定して下さい。例「POCHIINU」},,
pass);
case(a<>{},{Yes},{
case(@nochar(a)<=8,{Yes},{pass := a},
,{setpass2(a)})
})
};
/* setapass 本体 */
%name @case(pass,
{},{im({アクセス時に入力})},
,{im({予め設定済})} );
select({パスワードを設定しておきますか?。現在は「}|name|{」です。}
,99999,{},
{ 変更しない },{},
{ 他の人が使うので,アクセス時に入力する }, {pass :={} },
{ 専用なので,予め設定しておく }, {setpassn })
}; /* end of setpass */
%setforum{
var dispOne[1000];
%checkForum{[text]
%topname @head(text,{,});
case(@nochar(topname)<=8,
{Yes},{
case(topname ,
text,{im({Yes})},
,{checkForum(@body(text,{,}))})
},,{
footnote({「} | topname | {」は8文字以上です});
im({No})
})
};
dispOne := forum;
loop({
%a @input({巡回するフォーラムを「,」で区切って, 設定して下さい。\n}|
{ 例「FTOWNS1,FFMHOB」},,
dispOne);
case(a<>{},{Yes},{
dispOne := a;
case(@checkForum(a),{Yes},{ forum:=a; im({No}) },
,{ im({Yes}) })
},,{im({No})
})
});
footnote({});
};
%sethp{
var dispOne[1000];
%checkHP{[text]
%topname @head(text,{,});
%id @head(topname,{/});
%pass @body(topname,{/},{/});
%hpname @tail(topname,{/});
case(@nochar(id)==8 && @nochar(pass)<=8 && @nochar(hpname)<=8,
{Yes},{
case(topname ,
text,{im({Yes})},
,{checkHP(@body(text,{,}))})
},,{
footnote({「} | topname | {」は文字数が合いません。});
im({No})
})
};
dispOne := hp;
loop({
%a @input({巡回するHPを設定して下さい。\n\n}|
{ 形式「ID/パスワード/名前,ID2/パスワード2/名前2,,,」\n}|
{ ID:HP主催者のID パスワード:HPのパスワード \n}|
{ 名前:英字8文字以下の名前(任意の識別名)\n\n}|
{ 例「PFF00570/HACHIKOU/MOPROOM,}|
{KKK00123/AKITAKEN/FUFUFU」},,
dispOne);
case(a<>{},{Yes},{
dispOne := a;
case(@checkHP(a),{Yes},{ hp:=a; im({No}) },
,{ im({Yes}) })
},,{im({No})
})
});
footnote({});
};
%setupplt{
%putplp{[id,data]
write(fname, id | @xc({09}) | {:=} | @xc({7b}) |
data | @xc({7d}) | {;\n})
};
var loopon[5];
loop({
loopon := {Yes};
select({設定する項目を選択して下さい。},99999,{},
{設定処理を終了する}, {loopon:={No}},
{タウンズに接続したモデムの種類(会社名,機種名)},{setmodem},
{最寄りのNiftyのアクセスポイントの電話番号}, {settelno},
{最寄りのアクセスポイントの種別(速度・ROAD1/2)}, {settelty},
{電話回線の種類(ダイヤル/プッシュ回線)}, {setline},
{受信データの格納先(ドライブ名・パス名)}, {setlogd},
{NiftyのユーザID}, {setid},
{Niftyのパスワード(通信時に入れることも可能)}, {setpass},
{巡回するフォーラムの設定(複数可能)}, {setforum},
{巡回するHPの設定(複数可能)}, {sethp});
/*im(modem={} || telno={} || line={} || id={})*/
im(loopon)
});
%fname current | {\MOPSET.PLP};
case(@filechk( fname ),
{Yes},{delfile( fname )});
putplp({modem},modem);
putplp({telno},telno);
putplp({telty},telty);
putplp({telno2},telno2);
putplp({telty2},telty2);
putplp({line},line);
putplp({id},id);
putplp({pass},pass);
putplp({logd},logd);
putplp({forum},forum);
putplp({hp},hp);
};
/***********************************************************************
*
* MOPTERMの終了処理
*
***********************************************************************/
%stopmop{
select({本当に終了して良いですか?},99999,{},
{ はい },{stopterm},
{ いいえ },{})
};
/***********************************************************************
*
* 全体のメイン処理
*
***********************************************************************/
%current @case(@nochar(@getcdir),
3,{getchar(@getcdir,1,2)},
,{getcdir});
backclr(50,80,50);
footnote({});
stopbit(1);
dataleng({8bit});
xon({Yes});
rscs({Yes});
parity({None});
setoak({J});
click({No});
nattou({Yes});
lineend({CR});
/* オートパイロット停止時にPF12で再起動できるように */
setpf(12,{footnote({Loading..});}|
{setcdir(} | @xc({7b}) | @getcdir | @xc({7d}) | {);}
| {#NYAN.PLT});
logd:={B:}; /* default */
case(@filechk( current | {\MOPSET.PLP}),
{Yes},{#MOPSET.PLP},
{No},{setupplt});
loop({
select({処理を選んで下さい},999999,,
{ 自動通信を行います },autoacc,
{ 受信文書の参照をします },readdoc,
{ 送信文書の作成/更新をします },senddoc,
{ 各種設定を変更します },setupplt,
{ 自動処理を終了します(PF12で再起動) },{stop},
{ MOPTERMを終了します },stopmop);
im({Yes});
})